package com.examsystem.service;


import com.examsystem.config.SftpConfig;
import com.examsystem.pojo.vo.StuTeacherMsg;
import com.examsystem.pojo.vo.TeacherMsg;
import com.examsystem.pojo.vo.Result;
import com.examsystem.pojo.User;
import com.examsystem.pojo.vo.UserMsg;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * @author fire'ge
 */
public interface UserService {

    /**添加新的用户
     * @param user 用户类
     * @return 返回添加成功的条数
     */
    int addUser(User user);

    /**  返回用户的id
     * @param userId 用户的id
     * @return 返回用户的信息
     */
    UserMsg getUserMsg(int userId);

    /** 根据电话号码和密码来获取用户
     * @param phoneNum  电话号码
     * @param password 密码
     * @return 返回user类
     */
    User getUser(String phoneNum,String password);

    /** 根据电话号码来获取user
     * @param phoneNum  电话号码
     * @return 返回user类
     */
    User getUserByPhoneNum(String phoneNum);

    /**登录的功能
     * @param user 用户类
     * @return 返回Result结果
     */
    Result login(User user);


    /** 更新数据库的图片url
     * @param userId  用户的id
     * @param photoUrl 图片在服务器的路径url
     */
    void updateUserImg(int userId, String photoUrl);

    /**获取科任老师的基本信息
     * @param userId  根据user的id来回去科任老师的userId
     * @return 返回结果
     */
    List<StuTeacherMsg> queryTeacherMsg(int userId);


    /** 更新用户的userid
     * @param sftpConfig sftp的配置类
     * @param file 传入的文件
     * @param userId user的id
     * @return 返回更新成功的信息
     */
    String uploadImages(SftpConfig sftpConfig, MultipartFile file, int userId);

    /**
     * 教师注册
     * @param userPhoneNum 手机
     * @param userPassword 密码
     * @param subject 学科
     * @param className 班名
     * @return  int 【0：注册失败   1:注册成功】
     */
    int save(String userPhoneNum,String userPassword,String subject,String className);


    /** 学生登录
     * @param  user 用户
     * @return 返回登录结果
     */
    Result studentLogin(User user);

    /**
     * 教师登录
     * @param user 用户
     * @return Result对象
     */
    Result teacherLogin(User user);
    /**
     * 获取老师的信息
     * @param teacherId  老师id
     * @return  教师信息
     */
    User getTeacherMsg(int teacherId);

    /**
     *  修改教师账号密码
     * @param teacherId   教师id
     * @param password    密码
     * @return  result结果集
     */
    Result updatePassword(int teacherId, String password);

    /**
     * 获取试卷【根据试卷的状态】
     * @param userId  用户id
     * @param choice  【1：待发布  2：已发布】
     * @return  result结果集
     */
    Result getPaper(int userId, int choice);
}
